package com.sm.controller;

import java.util.List;

import com.sm.model.AppConfig;
import com.sm.model.User;
import com.sm.service.AppConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.sm.model.UserRefereesNumber;
import com.sm.service.MyTeamService;
import com.sm.service.TeamPankService;
import com.sm.service.UserService;
import com.sm.util.Msg;
import com.sm.vo.MyTeamPankVO;

/**
 *	团队pk榜controller
 * @author 60915
 */
@Controller
@RequestMapping("/team")
public class TeamPankController {

	@Autowired
    private TeamPankService teamPankService;
	@Autowired
	private UserService userService;
	@Autowired
	private MyTeamService myTeamService;

	@Autowired
	private AppConfigService appConfigService;

	/**
	 *	团队pk榜，1通过用户id查询我的推荐度的人
	 * @param userId	当前用户id
	 * @return
	 */
	@RequestMapping("/teamPank")
	@ResponseBody
	public Msg selectUserPank(Integer userId) {
		if(userId == null) {
			return Msg.fail().add("msg", "数据异常请重试");
		}

		//查询团队pk榜的所有人以及每个人的邀请人的数量。
		List<UserRefereesNumber> userRefereesNumbers = teamPankService.selectUserPank();

		if(userRefereesNumbers == null) {	//判断如何查询不到，表示没有用户可以进行pk排行
			return Msg.fail().add("msg", "没有用户无法进行pk排行");
		}

		//通过用户id查询用户
		User user = userService.selectUserById(userId);

		//定义一个开关，（当前用户未上榜，不在排名里面）
		boolean flag = false;
		//遍历这些所有的排名的人
		for (UserRefereesNumber userRefereesNumber : userRefereesNumbers) {
			if(user.getUserId().equals(userRefereesNumber.getUser().getUserId())) {
				flag = true;
				break;
			}
		}

		String teamPkBeginTime = appConfigService.getByKey("team_pk_begin_time").getValue();
		String teamPkEndTime = appConfigService.getByKey("team_pk_end_time").getValue();

		//通过用户id查询用户的推荐的所有人
		int number = myTeamService.selectRefereesUserNumber(userId,teamPkBeginTime,teamPkEndTime);

		if(flag) {
			//创建当前用户的推荐人数，以及是否上榜(1:上榜。 -1:未上榜)
			MyTeamPankVO myTeamPankVO = new MyTeamPankVO(user, number, 1);
			return Msg.success().add("userRefereesNumbers", userRefereesNumbers).add("myTeamPankVO", myTeamPankVO);
		}else {
			//创建当前用户的推荐人数，以及是否上榜(1:上榜。 -1:未上榜)
			MyTeamPankVO myTeamPankVO = new MyTeamPankVO(user, number, -1);
			return Msg.success().add("userRefereesNumbers", userRefereesNumbers).add("myTeamPankVO", myTeamPankVO);
		}


	}


}
